export default {
	namespaced: true,
	state: () => ({
		cart: JSON.parse(uni.getStorageSync('cart') || '[]')
	}),
	mutations: {
		// 添加购物车方法
		addToCart(state, goods) {
			console.log('页面传过来的商品个，你要把他保存到cart数组中去', goods)
			// 添加商品时要判断这个商品是否添加过(从数组中找出某一个元素)
			const result = state.cart.find(item => {
				return item.goods_id === goods.goods_id
			})
			if (result) {
				// 如果添加过，修改的商品的数量
				result.goods_count += 1
				// result.goods_count = result.goods_count + 1
			} else {
				// 没有，直接push
				state.cart.push(goods)
			}
			// 保存到本地
			this.commit('m_cart/saveToStorage')
		},

		// 修改购物车选中状态的方法
		updateGoodsState(state, goods) {
			// 找到要修改的商品
			const result = state.cart.find(item => {
				return item.goods_id === goods.goods_id
			})
			if (result) {
				result.goods_state = goods.goods_state
			}
			// 保存到本地
			this.commit('m_cart/saveToStorage')
		},

		// 修改购物车的商品数量
		updateGoodsCount(state, goods) {
			// 找到要修改的商品
			const result = state.cart.find(item => item.goods_id === goods.goods_id)

			if (result) {
				result.goods_count = goods.goods_count
			}
			// 保存到本地
			this.commit('m_cart/saveToStorage')
		},

		// 修改购物车商品的全部勾选状态
		updateAllGoodsState(state, allState) {
			state.cart.forEach(item => item.goods_state = allState)
			// 保存到本地
			this.commit('m_cart/saveToStorage')
		},

		// 将购物车中的数据持久化存储到本地
		saveToStorage(state) {
			uni.setStorageSync('cart', JSON.stringify(state.cart))
		}
	},
	getters: {
		// 计算购物车里商品总数
		total(state) {
			const total = state.cart.reduce((acc, item) => {
				return acc + item.goods_count
			}, 0)
			return total
		},
		// 底部结算-勾选商品总数
		checkedCount(state) {
			// 筛选出勾选的商品数组
			// const filtered = state.cart.filter(item => {
			// 	return item.goods_state
			// })
			// // 累加产品数量
			// const checkedCount = filtered.reduce((acc, item) => {
			// 	return acc + item.goods_count
			// }, 0)
			// return checkedCount
			return state.cart.filter(item => item.goods_state).reduce((acc, item) => acc + item.goods_count, 0)
		},
		// 底部结算-勾选商品总价
		checkedPrice(state) {
			// 筛选出勾选的商品数组
			const filtered = state.cart.filter(item => {
				return item.goods_state
			})
			// // 累加产品价格
			const checkedPrice = filtered.reduce((acc, item) => {
				return acc + (item.goods_count * item.goods_price)
			}, 0)
			return checkedPrice.toFixed(2)
		},
		// 底部结算-全选状态
		isAllChecked(state) {
			return state.cart.every(item => item.goods_state)
		}
	}
}